package errors

type BusinessError struct {
	Code int         `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data"`
}

var (
	LOGIN_UNKNOWN = NewError(202, "用户不存在")
	LOGIN_ERROR   = NewError(203, "账号或密码错误")
	VALID_ERROR   = NewError(300, "参数错误")
	ERROR         = NewError(400, "操作失败")
	UNAUTHORIZED  = NewError(401, "您还未登录")
	NOT_FOUND     = NewError(404, "资源不存在")
	INNER_ERROR   = NewError(500, "系统发生异常")
	ID_NOT_EXIST  = NewError(1001, "id不能为空")
)

func (e *BusinessError) Error() string {
	return e.Msg
}

func NewError(code int, msg string) *BusinessError {
	return &BusinessError{Code: code, Msg: msg}
}

func NewErrorWithData(code int, msg string, data interface{}) *BusinessError {
	return &BusinessError{Code: code, Msg: msg, Data: data}
}
